package com.insight.modules.system.util;


import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;

import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;


/**
 * Base64 编解码工具类
 *
 * <p>基于 Java 8 的 java.util.Base64 提供字符串加密与解密功能。
 * 所有操作均使用 UTF-8 编码。</p>
 *
 * @author jqlin
 */
@Slf4j
public class Base64Util {

    /**
     * 将字符串进行 Base64 解码
     *
     * @param data 被 Base64 编码的字符串
     * @return 解码后的原始字符串；若参数为 null 或解码异常则返回 null
     */
    public static String decode(String data) {
        if (data == null) {
            return null;
        }
        try {
            byte[] decodedBytes = Base64.getDecoder().decode(data);
            return new String(decodedBytes, StandardCharsets.UTF_8);
        } catch (IllegalArgumentException e) {
            log.error("Base64 解码失败，非法输入：{}", data, e);
            return null;
        }
    }

    /**
     * 将字符串进行 Base64 编码
     *
     * @param data 原始字符串
     * @return 编码后的 Base64 字符串；若参数为 null 则返回 null
     */
    public static String encode(String data) {
        if (data == null) {
            return null;
        }
        byte[] encodedBytes = Base64.getEncoder().encode(data.getBytes(StandardCharsets.UTF_8));
        return new String(encodedBytes, StandardCharsets.UTF_8);
    }
}
